package com.whfc.ms.api.base.controller;

import com.whfc.common.base.BaseController;
import com.whfc.common.result.ListData;
import com.whfc.common.result.PageData;
import com.whfc.common.result.Result;
import com.whfc.common.result.ResultUtil;
import com.whfc.common.util.SessionAttr;
import com.whfc.fuum.dto.AppCorpDTO;
import com.whfc.fuum.entity.SysUser;
import com.whfc.fuum.param.AppCorpAddParam;
import com.whfc.fuum.param.AppCorpEditParam;
import com.whfc.fuum.param.AppCorpListQO;
import com.whfc.ms.api.base.service.MsAppCorpService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 人员管理-合作单位
 *
 * @author guodong_sun
 * @Description:
 * @date 2019年8月27日
 */
@RestController
@RequestMapping("/ms/api/corp")
public class AppCorpController extends BaseController {

    @Autowired
    private MsAppCorpService msAppCorpService;

    /**
     * 获取所有的合作单位
     *
     * @param user
     * @return
     */
    @GetMapping("/getCorpList")
    public Result getCorpList(@SessionAttribute(SessionAttr.MS_USER) SysUser user,
                              @RequestParam("deptId") Integer deptId) {
        logger.info("获取所有的合作单位，loginer:{},deptId:{}", user.getUsername(), deptId);
        List<AppCorpDTO> list = msAppCorpService.getCorpList(deptId);
        return ResultUtil.success(new ListData<>(list));
    }

    /**
     * 人员管理-合作单位列表页
     *
     * @param user
     * @param request
     * @return
     */
    @GetMapping("/list")
    public Result list(@SessionAttribute(SessionAttr.MS_USER) SysUser user, @Validated AppCorpListQO request) {
        logger.info("人员管理-合作单位列表页，loginer:{},AppCorpListParam:{}", user.getUsername(), request.toString());
        PageData<AppCorpDTO> pageData = msAppCorpService.list(request);
        return ResultUtil.success(pageData);
    }


    /**
     * 人员管理-合作单位详情
     *
     * @param user
     * @param corpId
     * @return
     */
    @GetMapping("/detail")
    public Result detail(@SessionAttribute(SessionAttr.MS_USER) SysUser user, @RequestParam("corpId") Integer corpId) {
        logger.info("人员管理-合作单位详情,loginer:{},corpId:{}", user.getUsername(), corpId);
        AppCorpDTO appCorpDTO = msAppCorpService.detail(corpId);
        return ResultUtil.success(appCorpDTO);
    }


    /**
     * 人员管理-添加合作单位
     *
     * @param user
     * @param request
     * @return
     */
    @RequiresPermissions("prj/corp/add")
    @PostMapping("/add")
    public Result add(@SessionAttribute(SessionAttr.MS_USER) SysUser user, @Validated @RequestBody AppCorpAddParam request) {
        logger.info("人员管理-添加合作单位,loginer:{},AppCorpAddParam:{}", user.getUsername(), request.toString());
        msAppCorpService.add(request);
        return ResultUtil.success();
    }


    /**
     * 人员管理-编辑合作单位
     *
     * @param user
     * @param request
     * @return
     */
    @RequiresPermissions("prj/corp/edit")
    @PostMapping("/edit")
    public Result edit(@SessionAttribute(SessionAttr.MS_USER) SysUser user, @Validated @RequestBody AppCorpEditParam request) {
        logger.info("人员管理-编辑合作单位,loginer:{},AppCorpEditParam:{}", user.getUsername(), request.toString());
        msAppCorpService.edit(request);
        return ResultUtil.success();
    }


    /**
     * 人员管理-删除合作单位
     *
     * @param user
     * @param corpId
     * @return
     */
    @RequiresPermissions("prj/corp/del")
    @PostMapping("/del/{corpId}")
    public Result del(@SessionAttribute(SessionAttr.MS_USER) SysUser user, @PathVariable("corpId") Integer corpId) {
        logger.info("人员管理-删除合作单位，loginer:{},corpId:{}", user.getUsername(), corpId);
        msAppCorpService.del(corpId);
        return ResultUtil.success();
    }


}
